<?php

class ViewReplicarDatos extends TPage {
//<editor-fold defaultstate="collapsed" desc="Verifica Usuario Logueado">
  /**
   * determina si el usuario esta logueado en el sistema
   * @author VSR, 01/01/2011
   */
  private function usuarioLogueado(){
    $estaLogueado = false;
    try {
      $session = new THttpSession;
      $session->open();
      $oUsuario = $session[Usuario::NOMBRE_ENTIDAD];
      if(isset($oUsuario)){
        $estaLogueado = true;
      }
    } catch (Exception $e) {
      $estaLogueado = false;
    }
    return $estaLogueado;
  }

  /**
   * redirecciona al login
   * @author VSR, 01/01/2011
   */
  private function redireccionarLogin(){
    $this->Response->redirect($this->Service->constructUrl("FrmLoginWf"));
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Constantes">
  const SESION_DATOS = "arr";
  //funciones pagina
  const FUNCION_VER = "Ver";
  const FUNCION_REPLICAR_DATOS = "ReplicarDatos";
  //indices arreglo
  const ARRAY_DETALLE = 0;

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * obtiene los registros desde la base de datos
   * @author VSR, 01/01/2011
   */
  private function obtenerDatos(){
    try {
      // se deja estructura
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * actualiza los controles de la pagina segun los datos obtenidos
   * @author VSR, 01/01/2011
   */
  private function actualizaInterfaz(){
    $json = urldecode($this->Request["json"]);
    $pagina = urldecode($this->Request["pagina"]);

    try {
      $arr = json_decode($json);
      $arr = Utilidades::objectToArray($arr);
      $strEstado = "";
      $strFecha = "";
      $strObservacion = "";
      $queryString = "";

      if (!is_null($arr)) {
        $row = $arr[0];
        $strEstado = $row["NombreFlujoEstado"];
        $strFecha = $row["Fecha"];
        $strObservacion = $row["Observacion"];
        $queryString = $row["QueryString"];
      }
    } catch (Exception $e) {
      $strEstado = "";
      $strFecha = "";
      $strObservacion = "";
      $queryString = "";
    }

    $this->lblEstado->Text = strtoupper($strEstado);
    $this->lblFecha->Text = $strFecha;
    $this->lblObservacion->Text = $strObservacion;
    $this->btnReplicar->Attributes->Add("onclick", "return(replicarDatosPopUp('".$pagina."','".urlencode($queryString)."'))");
  }

  /**
   * inicializa algunos controles cuando se carga por primera vez la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControles($isPostBack){
    try {
      //inicializa los controles del Correlativo y Locales
      $this->inicializaControlesEventoWindowOnLoad($isPostBack);

      //verifica los permisos sobre los controles
      $this->verificarPermisos();

    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * inicializa los controles al cargar la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControlesEventoWindowOnLoad($isPostBack) {
    $nombrePagina = $this->obtenerNombrePagina();
    $sb = new StringBuilder();

    //se deja estructura por si se utiliza en algun momento
    //$sb->appendLine("-- codigo --");
    //$this->Page->ClientScript->registerEndScript("windowOnLoad", $sb->toString());
  }

  /**
   * verifica los permisos sobre los controles
   * @author VSR, 01/01/2011
   */
  private function verificarPermisos(){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    //verifica los permisos para los controles
    $this->pnlContenido->Visible = true; //Utilidades::tienePermiso($paginaActual, self::FUNCION_VER);
    $this->hBotonReplicar->Visible = true; //Utilidades::tienePermiso($paginaActual, self::FUNCION_REPLICAR_DATOS);

    if(!$this->pnlContenido->Visible) {
      $this->pnlMensajeAcceso->Visible = true;
      Utilidades::setPanelMensajeUsuario($this->pnlMensajeAcceso, "No tiene permiso para ver esta p&aacute;gina", "50%", Utilidades::ESTILO_MENSAJE_ERROR);
    }
  }

  /**
   * obtiene nombre de la pagina actual
   * @return <type>
   * @author VSR, 01/01/2011
   */
  private function obtenerNombrePagina(){
    $nombrePagina = Utilidades::obtenerNombrePaginaActual($this);
    return $nombrePagina;
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onLoad($param) {
    parent::onLoad($param);
    //si no esta conectado entonces lo redirecciona al login
    if(!$this->usuarioLogueado()){
      $this->redireccionarLogin();
    }
    $nombrePagina = $this->obtenerNombrePagina();
    $this->txtThemeBaseUrl->Value = $this->Page->Theme->BaseUrl;

    if(!$this->IsPostBack) {
      $this->inicializaControles($this->IsPostBack);
      $this->actualizaInterfaz();
    }

  }

//</editor-fold>


}
?>
